package com.tosh.model;

import com.tosh.model.comp.BetFair;
import com.tosh.model.comp.Bwin;
import com.tosh.model.comp.Marathon;
import com.tosh.model.comp.WilliamHill;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static com.tosh.util.Utils.isNOE;

/**
 * User: arsentyev
 * Date: 04.10.12
 */
public enum Company {
    MARATHON() {
        {
            urls.put(Topic.ENG_P1, "id=21520");
//            urls.put(Topic.ENG_P2, "id=22807");
//
//            urls.put(Topic.RUS_P1, "id=22433");
//            urls.put(Topic.RUS_P2, "id=45766");
//
//            urls.put(Topic.GER_P1, "id=22436");
//            urls.put(Topic.GER_P2, "id=42528");
//
//            urls.put(Topic.ESP_P1, "id=8736");
//            urls.put(Topic.ESP_P2, "id=48300");
//
//            urls.put(Topic.ITA_P1, "id=22434");
//            urls.put(Topic.ITA_P2, "id=46723");
//
////            urls.put(Topic.BRA_P1, "id=386546");
//            urls.put(Topic.BRA_P2, "id=386546");
//
////            urls.put(Topic.ARG_P1, "id=386546");
//            urls.put(Topic.ARG_P2, "id=411159");
//
//            urls.put(Topic.ROM_P1, "id=223112");
        }

        public List<Match> getMatches(String url) {
            return Marathon.getMatches(url);
        }
    },
    BWIN() {
        {
            urls.put(Topic.ENG_P1, "leagueIDs=(1)E6");
//
//            urls.put(Topic.ESP_P1, "leagueIDs=(1)hK8");
//            urls.put(Topic.ESP_P1, "leagueIDs=(1)hK8");
//
//            urls.put(Topic.ITA_P1, "leagueIDs=(1)E2");
//            urls.put(Topic.ITA_P2, "leagueIDs=(1)F7");
        }

        public List<Match> getMatches(String url) {
            return Bwin.getMatches(url);
        }
    },
    WILLIAM() {
        {
            urls.put(Topic.ENG_P1, "343");
//            urls.put(Topic.FRA_P2, "3381");
//            urls.put(Topic.GER_P2, "3646");
//            urls.put(Topic.ESP_P2, "5411");
        }

        public List<Match> getMatches(String url) {
            return WilliamHill.getMatches(url);
        }
    },
    BETFAIR() {
        {
            urls.put(Topic.ENG_P1, "id=31");
//            urls.put(Topic.ENG_P2, "id=33");

//            urls.put(Topic.RUS_P1, "id=101");
//            urls.put(Topic.RUS_P2, "id=880458");
//
//            urls.put(Topic.GER_P1, "id=59");
//            urls.put(Topic.GER_P2, "id=61");
//
//            urls.put(Topic.ESP_P1, "id=117");
//            urls.put(Topic.ESP_P2, "id=119");
//
//            urls.put(Topic.ITA_P1, "id=81");
//            urls.put(Topic.ITA_P2, "id=83");
//
//            urls.put(Topic.BRA_P1, "");
//            urls.put(Topic.BRA_P2, "id=321319");
//
//            urls.put(Topic.ARG_P1, "");
//            urls.put(Topic.ARG_P2, "id=803237");
//
//            urls.put(Topic.DEN_P1, "id=23");
//            urls.put(Topic.DEN_P1, "id=25");
//
//            urls.put(Topic.NOR_P1, "id=93");
//            urls.put(Topic.NOR_P2, "id=95");
//
//            urls.put(Topic.POL_P1, "id=97");
//            urls.put(Topic.POL_P2, "id=403085");
//
//            urls.put(Topic.POR_P1, "id=99");
//            urls.put(Topic.POR_P2, "id=19640");
//
//            urls.put(Topic.TUR_P1, "id=194215");
//            urls.put(Topic.TUR_P2, "id=175680");
//
//            urls.put(Topic.UKR_P1, "id=139");
//            urls.put(Topic.UKR_P2, "id=872215");
//
//            urls.put(Topic.FRA_P1, "id=55");
//            urls.put(Topic.FRA_P2, "id=57");
//
//            urls.put(Topic.NED_P1, "id=71");
//            urls.put(Topic.ROM_P1, "id=4905");
//            urls.put(Topic.AUT_P1, "id=7");
//            urls.put(Topic.BEL_P1, "id=89979");
//            urls.put(Topic.BOL_P1, "id=15");
//            urls.put(Topic.HUN_P1, "id=1842928");
//            urls.put(Topic.GRE_P1, "id=67");
//            urls.put(Topic.IND_P1, "id=2181963");
//            urls.put(Topic.IRL_P1, "id=77");
//            urls.put(Topic.LAT_P1, "id=887178");
//            urls.put(Topic.PAR_P1, "id=839575");
//            urls.put(Topic.SLK_P1, "id=113");
//            urls.put(Topic.SVN_P1, "id=115");
//            urls.put(Topic.FIN_P1, "id=45");
//            urls.put(Topic.CRO_P1, "id=17");
//            urls.put(Topic.CZE_P1, "id=21");
//            urls.put(Topic.CHI_P1, "id=744098");
//            urls.put(Topic.SWI_P1, "id=133");
//            urls.put(Topic.SWE_P1, "id=129");
//            urls.put(Topic.SKR_P1, "id=867459");
        }

        public List<Match> getMatches(String url) {
            return BetFair.getMatches(url);
        }
    };

    protected Map<Topic, String> urls = new HashMap<Topic, String>();

    public List<Match> getMatches(Topic topic) {
        List<Match> matches = new ArrayList<Match>();
        String url = urls.get(topic);
        if (isNOE(url)) {
            return matches;
        }

        return getMatches(url);
    }

    protected abstract List<Match> getMatches(String url);
}